package fi.uba.algocontrol.observer;

import fi.uba.algocontrol.model.Mapa;
import fi.uba.algocontrol.model.ObjetoPosicionableGenerico;
import fi.uba.algocontrol.model.aviones.Avion;
import fi.uba.algocontrol.model.niveles.Puntaje;
import fi.uba.algocontrol.model.pistas.Entrada;
import fi.uba.algocontrol.model.pistas.Pista;
import fi.uba.algocontrol.view.JuegoView;
import fiuba.algo3.titiritero.dibujables.Imagen;
import fiuba.algo3.titiritero.modelo.GameLoop;

import java.net.URL;

public class ColisionObserver extends AbstractObserver
{
    private boolean colisionDetectadaConAvion = false;

    public ColisionObserver(GameLoop gameLoop, Mapa mapa, JuegoView juegoView) {
        super(gameLoop, mapa, juegoView);
    }

    public void notificarCicloFinalizado()
    {
        if (colisionDetectadaConAvion)
        {
            this.gameLoop.detenerEjecucion(); //detengo el juego
   
            this.colisionDetectadaConAvion = false; //limpio flag de colision

            return;
        }

        for(Avion avion : this.mapa.getAviones())
        {
        	//Compara distancia con aviones
            for(Avion avionCompare : this.mapa.getAviones())
            {
                if (avion != avionCompare && avion.getDistancia(avionCompare) < avion.getRadioSprite().getAncho()/2)
                {
                    try
                    {
                        avion.chocar(avionCompare);
                        this.colisionDetectadaConAvion = true; //seteo flag de colision detectada para detener el juego en el proximo ciclo
                    }
                    catch(Exception e)
                    {

                    }
                }
            }
        }

        
    }
}
